﻿#define _CRT_SECURE_NO_WARNINGS 1
// 原题连接：https://www.acwing.com/problem/content/description/506/
/*
题目描述：
n
 个小伙伴（编号从 0
 到 n−1
）围坐一圈玩游戏。

按照顺时针方向给 n
 个位置编号，从 0
 到 n−1
。

最初，第 0
 号小伙伴在第 0
 号位置，第 1
 号小伙伴在第 1
 号位置，…，依此类推。 

游戏规则如下：每一轮第 0
 号位置上的小伙伴顺时针走到第 m
 号位置，第 1
 号位置小伙伴走到第 m+1
 号位置，…，依此类推，第 n−m
 号位置上的小伙伴走到第 0
 号位置，第 n−m+1
 号位置上的小伙伴走到第 1
 号位置，…，第 n−1
 号位置上的小伙伴顺时针走到第 m−1
 号位置。

现在，一共进行了 10k
 轮，请问 x
 号小伙伴最后走到了第几号位置。

输入格式
输入共 1
 行，包含 4
 个整数 n、m、k、x
，每两个整数之间用一个空格隔开。

输出格式
输出共 1
 行，包含 1
 个整数，表示 10k
 轮后 x
 号小伙伴所在的位置编号。

数据范围
1<n<106
,
0<m<n
,
1≤x≤n
,
0<k<109
输入样例：
10 3 4 5
输出样例：
5
*/

// 开始解题：
// 方法——快速幂
#include <iostream>
using namespace std;
int n, m, k, x;

// 即要求(x + 10^k * m) % n的结果，故可以用快速幂来解决
int qmi(int a, int b, int p) {
    int ret = 1 % p;
    while (b) {
        if (b & 1) {
            ret = (long long)ret * a % p;
        }
        a = (long long)a * a % p;
        b >>= 1;
    }
    return ret;
}

int main() {
    scanf("%d%d%d%d", &n, &m, &k, &x);
    printf("%lld", (x + (long long)qmi(10, k, n) * m) % n);
    return 0;
}